// 这个文件专门去二次封装axios
import axios from "axios"
import Nprogress from "nprogress" //这个东西是搞那个虚假进度条的
import "nprogress/nprogress.css"

// 想要二次封装axios增加的功能
// 配置基础路径和超时限制

// 创建一个ajax实例
const ajax = axios.create({
  baseURL: "/api",
  timeout: 1000,
})

// 添加请求拦截器
ajax.interceptors.request.use(function (config) {
  // config 里面是请求所有信息所组成的一个对象(请求报文)
  Nprogress.start()
  return config
})

// 添加相应拦截器
ajax.interceptors.response.use(
  function (response) {
    // 响应成功执行的回调函数
    // response 是响应所有信息所组成的一个对象(响应报文)
    Nprogress.done()
    return response.data
  },
  function (error) {
    // 响应失败执行的回调函数
    if (error.response.status == 401) {
      alert("未授权")
    } else if (error.response.status == 403) {
      alert("禁止访问")
    } else if (error.response.status == 404) {
      alert("错误访问")
    } else if (error.response.status == 500) {
      alert("服务器出错了")
    }
    return new Promise(() => {}) // 返回一个pending的promise 用来终止链式调用
  }
)

export default ajax
